/*
 * IkaGraphic.h
 */

#ifndef IKAGRAPHIC_H_
#define IKAGRAPHIC_H_

#include <SFML/Graphics.hpp>
#include "IkaString.h"

namespace atomic {

/**
* IkaGraphic draws and manages an image
*/
class IkaGraphic {

public:
	/**
	* Default constructor
	*/
	IkaGraphic();

	/**
	* Copy constructor
	* \param copy	: an IkaGraphic to copy
	*/
	IkaGraphic(const atomic::IkaGraphic &copy);

	/**
	* Constructor based on a single input image
	*/
	IkaGraphic(std::string imageName);

	/**
	* Constructor based on a src to the image
	* \param imageName	:  path to the image
	*/
	IkaGraphic(char* imageName);

	/**
	* Reinitializes attributes to default values
	*/
	void Init();

	/**
	* Loads an image file
	*/
	void LoadFile(const char* imageName);

	/**
	* Destructor
	*/
	virtual ~IkaGraphic();

	/**
	* Access to sf::sprite
	* \return a reference to the sf::Sprite
	*/
	sf::Sprite& Sprite() const;

	/**
	* Operator =
	*/
	atomic::IkaGraphic& operator=(const atomic::IkaGraphic& graphic);

protected:
	/**
	* A pointer to the sf::Image
	*/
	sf::Image *myImage;

	/**
	* A pointer to the sf::Sprite
	*/
	sf::Sprite *mySprite;
};

}

#endif /* IKAGRAPHIC_H_ */
